function alterarSenha() {
	run_waitMe();
	
	limparMensagem();
	desabilitaBotoes();
	
	$.ajax({
        url:  basepath+"admin/alterar_senha/alterarSenha",
        data: $('#formAlterarSenha').serialize(),
        type: 'POST',
        async: false,
        success: function(retorno){
        	
        	stop_waitMe();
        	
        	var obj = jQuery.parseJSON( retorno );
        	
        	if (obj.sucesso == true) {
        		
        		var objeto = new Object();

        		objeto.toastr = "success";
        		objeto.title = "Senha";
        		objeto.msg = obj.mensagem;

			    var mensagem = JSON.stringify(objeto);  
			    
    			// Creating cookie
    			$.cookie('toastr', mensagem, { path: '/' }); 
                
                window.parent.location = basepath+"admin";
        		
        	}else{
        		habilitaBotoes();
        		
        		//Rola a página para cima
    			$('html, body').animate({ scrollTop: 0 }, 'slow');
    			
    			// Mostra mensagem
    			$("#mensagem").show();
    			$("#mensagem").prepend('<div class="row alert '+obj.tipoMensagem+' alert-dismissible" role="alert"><button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>'+obj.mensagem+'</div>');
        	}
        	
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
        	stop_waitMe();
        	
        	habilitaBotoes();
        	
        	//Rola a página para cima
    		$('html, body').animate({ scrollTop: 0 }, 'slow');
        	
    		// Mostra mensagem
			$("#mensagem").show();
			$("#mensagem").prepend('<div class="row alert alert-danger alert-dismissible" role="alert"><button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>Ocorreu um erro. Tente novamente mais tarde!</div>')
        }
    });

}

function limpaCampo(){
	$('#formAlterarSenha').each (function(){
	  this.reset();
	});
}

function desabilitaBotoes(){
	// Desabilita os botões
	$("#buttonSalvar").attr("disabled", "disabled");
	$("#buttonVoltar").attr("disabled", "disabled");
}

function habilitaBotoes(){
	// Habilita o botão novamente
	$("#buttonSalvar").removeAttr("disabled");
	$("#buttonVoltar").removeAttr("disabled");
}

function limparMensagem(){
	// Limpando dados da mensagem
	$("#mensagem").hide();
	$("#mensagem").html("");
}

function limparformAlterarSenha(){
	$('#formAlterarSenha').data('formValidation').resetForm();
}

function formAlterarSenha() {
	
	FormValidation.Validator.securePassword = {
        validate: function(validator, $field, options) {
            var value = $field.val();
            if (value === '') {
                return true;
            }

            // Check the password strength
            if (value.length < 8) {
                return {
                    valid: false,
                    message: 'A senha deve ter mais de 8 caracteres.'
                };
            }

            // The password doesn't contain any uppercase character
            if (value === value.toLowerCase()) {
                return {
                    valid: false,
                    message: 'A senha deve conter pelo menos um caractere em letra maiúscula.'
                }
            }

            // The password doesn't contain any uppercase character
            if (value === value.toUpperCase()) {
                return {
                    valid: false,
                    message: 'A senha deve conter pelo menos um caractere em letra minúscula.'
                }
            }

            // The password doesn't contain any digit
            if (value.search(/[0-9]/) < 0) {
                return {
                    valid: false,
                    message: 'A senha deve conter pelo menos um dígito.'
                }
            }

            return true;
        }
    };
	
	$('#formAlterarSenha').formValidation({
		framework: 'bootstrap',
        icon: {
            valid: 'glyphicon glyphicon-ok',
            invalid: 'glyphicon glyphicon-remove',
            validating: 'glyphicon glyphicon-refresh'
        },
        button: {
		    // The disabled class
		    disabled: ''
		},
        fields : {
        	senhaAtual : {
				validators : {
					notEmpty : {
						message : 'Senha Atual deve ser informada.'
					}
				}
			},
			senhaNova: {
	            validators: {
	            	notEmpty : {
						message : 'Senha Nova deve ser informada.'
					},
					stringLength: {
                        min: 6,
                        message: 'Senha deve conter no minímo 6 caracteres.'
                    },
					callback: {
	                    callback: function(value, validator, $field) {
	                        var score = 0;

	                        if (value === '') {
	                            return {
	                                valid: true,
	                                score: null
	                            };
	                        }

	                        // Check the password strength
	                        score += ((value.length >= 6) ? 1 : -1);
	                        
	                        // The password contains uppercase character
	                        if (/[A-Z]/.test(value)) {
	                            score += 1;
	                        }

	                        // The password contains uppercase character
	                        if (/[a-z]/.test(value)) {
	                            score += 1;
	                        }

	                        // The password contains number
	                        if (/[0-9]/.test(value)) {
	                            score += 1;
	                        }

	                        // The password contains special characters
	                        if (/[!#$%&^~*_]/.test(value)) {
	                            score += 1;
	                        }

	                        return {
	                            valid: true,
	                            score: score    // We will get the score later
	                        };
	                    }
	                }
	            }
	        },
	        confirmarSenhaNova: {
	            validators: {
	            	notEmpty : {
						message : 'Confirmar Senha Nova deve ser informada.'
					},
	                identical: {
	                    field: 'senhaNova',
	                    message: 'Confirmação e Senha Nova são diferentes.'
	                }
	            }
	        }
		}
	})
	.on('success.form.fv', function(e) {
		// Prevent form submission		
        e.preventDefault();
        
        alterarSenha();
    })
    .on('success.validator.fv', function(e, data) {
        // The password passes the callback validator
        if (data.field === 'senhaNova' && data.validator === 'callback') {
            // Get the score
            var score = data.result.score,
                $bar  = $('#passwordMeter').find('.progress-bar');

            switch (true) {
                case (score === null):
                    $bar.html('').css('width', '0%').removeClass().addClass('progress-bar');
                    break;

                case (score <= 0):
                    $bar.html('Muito Fraco').css('width', '25%').removeClass().addClass('progress-bar progress-bar-danger');
                    break;

                case (score > 0 && score <= 2):
                    $bar.html('Fraco').css('width', '50%').removeClass().addClass('progress-bar progress-bar-warning');
                    break;

                case (score > 2 && score <= 4):
                    $bar.html('Médio').css('width', '75%').removeClass().addClass('progress-bar progress-bar-info');
                    break;

                case (score > 4):
                    $bar.html('Forte').css('width', '100%').removeClass().addClass('progress-bar progress-bar-success');
                    break;

                default:
                    break;
            }
        }
    });
}

function inicializandoComponentes(){
	
	$("#buttonVoltar").bind('click',function(e) {
		// Prevent form submission
        e.preventDefault();
        
        window.parent.location = basepath+"admin";
	});	
}

function init() {
	
	limpaCampo();
	
	inicializandoComponentes();
	
	formAlterarSenha();
}

$(document).ready(init);